USE [influenza]
GO
/****** Object:  StoredProcedure [dbo].[SP_enTransitoLab]    Script Date: 03/24/2010 09:55:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO




ALTER PROCEDURE [dbo].[SP_enTransitoLab]
	@id_unidad varchar(10),
	@nStatus varchar(10),
	@nEstado varchar(3),
	@laboratorio varchar(3),
	@ordena varchar(10),
	@busqueda varchar(100),
	@tabla varchar(50),
	@campo varchar(50),
	@criterio varchar(10)
as

Begin

declare @qry VARCHAR(8000)
declare @txt VARCHAR(100)
declare @tblmuestra VARCHAR(100)
declare @signo VARCHAR(10)
declare @sinresultado VARCHAR(100)

--Alambrado para indre
 IF @id_unidad = 33 AND @nEstado != 0
 	set @txt = 'a.id_laboratorio in(' + @laboratorio + ',6,24,29) AND '
 ELSE IF @nEstado != 0
	set @txt = 'a.id_laboratorio in(' + @laboratorio + ') AND '
 ELSE
	set @txt = ''

 -- para el  buscador de muestras
 IF @criterio = '='
	set @signo = ' = '
 ELSE IF @criterio = '!='
	set @signo = ' != '
 ELSE IF @criterio = '%LIKE%'
	SET @signo = ' LIKE '
 ELSE
	SET @signo = ''

 IF @tabla = 'aux_muestras' AND @busqueda != ''
 	SET @tblmuestra = 'AND m.' + @campo + @signo + @busqueda
 ELSE IF @tabla = 'dat_laboratorio' AND @busqueda != ''
	SET @txt = @txt + ' a.' + @campo + @signo + @busqueda + ' AND '
 ELSE
	BEGIN
		set @tblmuestra = ''
	END

 IF @nStatus = '4'
	SET @sinresultado = ' AND a.nResultado is NULL'
 ELSE
	SET @sinresultado = ''

SET @qry = 'SELECT catalogos.dbo.fUnidad_proced(a.id_sector,a.id_unidad) as Unidad,
		g.cPaterno,
                g.cMaterno,
                g.cNombre,
                g.curp,
                c.procedimiento as Muestra,
                CONVERT(varchar(10),a.fMuestra,103) as fMuestra ,
                m.cFolio,
                a.nFolio_lab,
                a.id_registro,
                m.id_muestras
            FROM dat_laboratorio a
		INNER JOIN dat_generales g ON (a.id_generales = g.id_principal)
		INNER JOIN dat_registro  b ON (g.id_principal = b.id_generales)
		--INNER JOIN cat_lab_muestra c ON (a.nTipoMuestra = c.id_Muestra)
                INNER JOIN cat_procedimientos c ON (a.nTipoMuestra = c.id_procedimiento)
                INNER JOIN aux_muestras m on (b.id_principal = m.id_principal AND a.nTipomuestra = m.nTipoMuestra ) ' + @tblmuestra + '
            WHERE '+ @txt +' a.nStatus in('+@nStatus+') AND a.fCalpi is NULL' + @sinresultado
        if @nEstado<>''
        begin
         SET  @qry=@qry+' AND g.nEntidad='+@nEstado
        end
        SET @qry=@qry+' ORDER BY'+(
			case @ordena
				when 'idUnidad' Then' Unidad asc'
				when 'idPaciente' Then' g.cPaterno, g.cMaterno, g.cNombre asc'
				when 'idCurp' then +' g.curp asc'
				when 'idTipMuestra' then' c.Muestra asc'
				when 'idfToma' then ' a.fMuestra desc'
				when 'idfolio' then ' m.cFolio asc'
				when 'idfolioLab' then ' a.nFolio_lab asc'
				else ' g.cPaterno, g.cMaterno, g.cNombre, Unidad asc'
			end
        )

exec (@qry)
End